package ar.edu.unrn.lia.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;

@Entity
public class Propietario extends Cliente implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -408064980866204911L;

	private Integer porcentaje = 0;
	private List<Propiedad> propiedades = new ArrayList<Propiedad>(0);

	public Propietario() {
		super();
	}

	public Propietario(Integer porcentaje) {
		super();
		this.porcentaje = porcentaje;
	}

	@Column(name = "porcentaje")
	@NotNull(message = "{name.notnull}")	
	@Max(value = 100)
	public Integer getPorcentaje() {
		return porcentaje;
	}

	public void setPorcentaje(Integer porcentaje) {
		this.porcentaje = porcentaje;
	}

	@OneToMany(cascade = CascadeType.ALL, mappedBy = "propietario", fetch = FetchType.LAZY)
	@OrderBy("estado DESC")
	public List<Propiedad> getPropiedades() {
		return propiedades;
	}

	public void setPropiedades(List<Propiedad> propiedades) {
		this.propiedades = propiedades;
	}
	
	public void agregarPropiedad(Propiedad propiedad)
	{
		propiedad.setPropietario(this);
		getPropiedades().add(propiedad);
	}

	public void removerPropiedad(Propiedad propiedad)
	{
		propiedad.setPropietario(null);
		getPropiedades().remove(propiedad);
	}
}
